/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package manejadorimagen;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

/**
 *
 * @author ale
 */
public class GestorImagen {
    /*Esta clase se encargara de realizar todas las gestiones correspondientes
     * a la gfestion de imagen
     */
    
    
    
    private BufferedImage img;
    private BufferedImage ImgRedimencionada;
    private Graphics imagen;
    private Graphics redimencionada;
    public Image redim;

    /**
     * Metodo para cargar una BufferedImage cuya direccion se pasa por parametro
     * @param direccion absoluta del archivo seleccionado
     */   
    public void cargarImagen(String direccion)
    {
        try
        {
            System.out.println(direccion);
            //ImageIO es estatica, entonces no se inicializa con el operador new
            img = ImageIO.read(new File(direccion));
        }
        catch (IOException e)
        {
        }
        
    }
        
    /**
     * @return the img
     */
    public BufferedImage getImg() {
        return img;
    }

    /**
     * @param img the img to set
     */
    public void setImg(BufferedImage img) {
        this.img = img;
    }
    
    /**
     * @return the ImgRedimencionada
     */
    public BufferedImage getImgRedimencionada() {
        if(this.ImgRedimencionada==null)
        {
            int w = this.getImg().getWidth()/2;  
            int h = this.getImg().getHeight()/2;
            this.ImgRedimencionada = new BufferedImage(w,h,BufferedImage.SCALE_DEFAULT);
        }
        return this.ImgRedimencionada;
    }

    public Image redimencionarImagen()
    {
        int w = this.getImg().getWidth()/2;  
        int h = this.getImg().getHeight()/2;
        this.redim=this.getImg().getScaledInstance(w,h,Image.SCALE_SMOOTH);
        return redim;
    }
    
    /**
     * @param ImgRedimencionada the ImgRedimencionada to set
     */
    public void setImgRedimencionada(BufferedImage ImgRedimencionada) {
        this.ImgRedimencionada = ImgRedimencionada;
    }

    /**
     * @return the imagen
     */
    public Graphics getImagen() {
        return imagen;
    }

    /**
     * @param imagen the imagen to set
     */
    public void setImagen(Graphics imagen) {
        this.imagen = imagen;
    }

    /**
     * @return the redimencionada
     */
    public Graphics getRedimencionada() {
        if(this.redimencionada==null)
        {
            int w = this.getImg().getWidth()/2;  
            int h = this.getImg().getHeight()/2;  
            this.setImgRedimencionada(new BufferedImage(w,h,this.getImg().getType())); 
            this.redimencionada = this.getImgRedimencionada().createGraphics();
        }
        return redimencionada;
    }

    /**
     * @param redimencionada the redimencionada to set
     */
    public void setRedimencionada(Graphics redimencionada) {
        this.redimencionada = redimencionada;
    }
    
}
